fluent-bit:
  # Default values for fluent-bit.

  # kind -- DaemonSet or Deployment
  kind: DaemonSet

  # replicaCount -- Only applicable if kind=Deployment
  replicaCount: 1

  image:
    repository: cr.fluentbit.io/fluent/fluent-bit
    # Overrides the image tag whose default is {{ .Chart.AppVersion }}
    tag: ""
    pullPolicy: Always

  testFramework:
    image:
      repository: busybox
      pullPolicy: Always
      tag: latest

  imagePullSecrets: []
  nameOverride: ""
  fullnameOverride: ""

  serviceAccount:
    create: true
    annotations: {}
    name:

  rbac:
    create: true
    nodeAccess: false

  podSecurityPolicy:
    create: false
    annotations: {}

  openShift:
    # Sets Openshift support
    enabled: false
    # Creates SCC for Fluent-bit when Openshift support is enabled
    securityContextConstraints:
      create: true
      annotations: {}

  podSecurityContext: {}
  #   fsGroup: 2000

  hostNetwork: false
  dnsPolicy: ClusterFirst

  dnsConfig: {}
  #   nameservers:
  #     - 1.2.3.4
  #   searches:
  #     - ns1.svc.cluster-domain.example
  #     - my.dns.search.suffix
  #   options:
  #     - name: ndots
  #       value: "2"
  #     - name: edns0

  hostAliases: []
  #   - ip: "1.2.3.4"
  #     hostnames:
  #     - "foo.local"
  #     - "bar.local"

  securityContext: {}
  #   capabilities:
  #     drop:
  #     - ALL
  #   readOnlyRootFilesystem: true
  #   runAsNonRoot: true
  #   runAsUser: 1000

  service:
    type: ClusterIP
    port: 2020
    labels: {}
    # nodePort: 30020
    # clusterIP: 172.16.10.1
    annotations: {}
  #   prometheus.io/path: "/api/v1/metrics/prometheus"
  #   prometheus.io/port: "2020"
  #   prometheus.io/scrape: "true"

  serviceMonitor:
    enabled: false
  #   namespace: monitoring
  #   interval: 10s
  #   scrapeTimeout: 10s
  #   jobLabel: fluentbit
  #   selector:
  #    prometheus: my-prometheus
  #  ## metric relabel configs to apply to samples before ingestion.
  #  ##
  #  metricRelabelings:
  #    - sourceLabels: [__meta_kubernetes_service_label_cluster]
  #      targetLabel: cluster
  #      regex: (.*)
  #      replacement: ${1}
  #      action: replace
  #  ## relabel configs to apply to samples after ingestion.
  #  ##
  #  relabelings:
  #    - sourceLabels: [__meta_kubernetes_pod_node_name]
  #      separator: ;
  #      regex: ^(.*)$
  #      targetLabel: nodename
  #      replacement: $1
  #      action: replace

  prometheusRule:
    enabled: false
  #   namespace: ""
  #   additionalLabels: {}
  #   rules:
  #   - alert: NoOutputBytesProcessed
  #     expr: rate(fluentbit_output_proc_bytes_total[5m]) == 0
  #     annotations:
  #       message: |
  #         Fluent Bit instance {{ $labels.instance }}'s output plugin {{ $labels.name }} has not processed any
  #         bytes for at least 15 minutes.
  #       summary: No Output Bytes Processed
  #     for: 15m
  #     labels:
  #       severity: critical

  dashboards:
    enabled: false
    labelKey: grafana_dashboard
    annotations: {}
    namespace: ""

  lifecycle: {}
    # preStop:
    #   exec:
    #     command: ["/bin/sh", "-c", "sleep 20"]

  livenessProbe:
    httpGet:
      path: /
      port: http

  readinessProbe:
    httpGet:
      path: /api/v1/health
      port: http

  resources: {}
  #   limits:
  #     cpu: 100m
  #     memory: 128Mi
  #   requests:
  #     cpu: 100m
  #     memory: 128Mi

  ## only available if kind is Deployment
  ingress:
    enabled: false
    className: ""
    annotations: {}
      # kubernetes.io/ingress.class: nginx
      # kubernetes.io/tls-acme: "true"
    hosts: []
    # - host: fluent-bit.example.tld
    extraHosts: []
    # - host: fluent-bit-extra.example.tld
        ## specify extraPort number
    #   port: 5170
    tls: []
    #  - secretName: fluent-bit-example-tld
    #    hosts:
    #      - fluent-bit.example.tld

  ## only available if kind is Deployment
  autoscaling:
    enabled: false
    minReplicas: 1
    maxReplicas: 3
    targetCPUUtilizationPercentage: 75
  #  targetMemoryUtilizationPercentage: 75
     ## see https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/#autoscaling-on-multiple-metrics-and-custom-metrics
    customRules: []
  #     - type: Pods
  #       pods:
  #         metric:
  #           name: packets-per-second
  #         target:
  #           type: AverageValue
  #           averageValue: 1k
      ## see https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#support-for-configurable-scaling-behavior
    behavior: {}
  #      scaleDown:
  #        policies:
  #          - type: Pods
  #            value: 4
  #            periodSeconds: 60
  #          - type: Percent
  #            value: 10
  #            periodSeconds: 60

  ## only available if kind is Deployment
  podDisruptionBudget:
    enabled: false
    annotations: {}
    maxUnavailable: "30%"

  nodeSelector: {}

  tolerations: []

  affinity: {}

  labels: {}

  annotations: {}

  podAnnotations: {}

  podLabels: {}

  priorityClassName: ""

  env: []
  #  - name: FOO
  #    value: "bar"

  # The envWithTpl array below has the same usage as "env", but is using the tpl function to support templatable string.
  # This can be useful when you want to pass dynamic values to the Chart using the helm argument "--set <variable>=<value>"
  # https://helm.sh/docs/howto/charts_tips_and_tricks/#using-the-tpl-function
  envWithTpl: []
  #  - name: FOO_2
  #    value: "{{ .Values.foo2 }}"
  #
  # foo2: bar2

  envFrom: []

  extraContainers: []
  #   - name: do-something
  #     image: busybox
  #     command: ['do', 'something']

  flush: 1

  metricsPort: 2020

  extraPorts: []
  #   - port: 5170
  #     containerPort: 5170
  #     protocol: TCP
  #     name: tcp
  #     nodePort: 30517

  extraVolumes: []

  extraVolumeMounts: []

  updateStrategy: {}
  #   type: RollingUpdate
  #   rollingUpdate:
  #     maxUnavailable: 1

  # Make use of a pre-defined configmap instead of the one templated here
  existingConfigMap: ""

  networkPolicy:
    enabled: false
  #   ingress:
  #     from: []

  luaScripts: {}

  ## https://docs.fluentbit.io/manual/administration/configuring-fluent-bit/configuration-file
  config:
    service: |
      [SERVICE]
          Daemon Off
          Flush {{ .Values.flush }}
          Log_Level {{ .Values.logLevel }}
          Parsers_File parsers.conf
          Parsers_File custom_parsers.conf
          HTTP_Server On
          HTTP_Listen 0.0.0.0
          HTTP_Port {{ .Values.metricsPort }}
          Health_Check On

    ## https://docs.fluentbit.io/manual/pipeline/inputs
    inputs: |
      [INPUT]
          Name tail
          Path /var/log/containers/*.log
          multiline.parser docker, cri
          Tag kube.*
          Mem_Buf_Limit 5MB
          Skip_Long_Lines On
  
      [INPUT]
          Name systemd
          Tag host.*
          Systemd_Filter _SYSTEMD_UNIT=kubelet.service
          Read_From_Tail On

    ## https://docs.fluentbit.io/manual/pipeline/filters
    filters: |
      [FILTER]
          Name kubernetes
          Match kube.*
          Merge_Log On
          Keep_Log Off
          K8S-Logging.Parser On
          K8S-Logging.Exclude On

    ## https://docs.fluentbit.io/manual/pipeline/outputs
    outputs: |
      [OUTPUT]
          Name es
          Match kube.*
          Host elasticsearch-master
          Logstash_Format On
          Retry_Limit False
  
      [OUTPUT]
          Name es
          Match host.*
          Host elasticsearch-master
          Logstash_Format On
          Logstash_Prefix node
          Retry_Limit False

    ## https://docs.fluentbit.io/manual/pipeline/parsers
    customParsers: |
      [PARSER]
          Name docker_no_time
          Format json
          Time_Keep Off
          Time_Key time
          Time_Format %Y-%m-%dT%H:%M:%S.%L

    # This allows adding more files with arbitary filenames to /fluent-bit/etc by providing key/value pairs.
    # The key becomes the filename, the value becomes the file content.
    extraFiles: {}
  #     example.conf: |
  #       [OUTPUT]
  #           Name example
  #           Match foo.*
  #           Host bar

  # The config volume is mounted by default, either to the existingConfigMap value, or the default of "fluent-bit.fullname"
  volumeMounts:
    - name: config
      mountPath: /fluent-bit/etc/fluent-bit.conf
      subPath: fluent-bit.conf
    - name: config
      mountPath: /fluent-bit/etc/custom_parsers.conf
      subPath: custom_parsers.conf

  daemonSetVolumes:
    - name: varlog
      hostPath:
        path: /var/log
    - name: varlibdockercontainers
      hostPath:
        path: /var/lib/docker/containers
    - name: etcmachineid
      hostPath:
        path: /etc/machine-id
        type: File

  daemonSetVolumeMounts:
    - name: varlog
      mountPath: /var/log
    - name: varlibdockercontainers
      mountPath: /var/lib/docker/containers
      readOnly: true
    - name: etcmachineid
      mountPath: /etc/machine-id
      readOnly: true

  args: []

  command: []

  # This supports either a structured array or a templatable string
  initContainers: []

  # Array mode
  # initContainers:
  #   - name: do-something
  #     image: bitnami/kubectl:1.22
  #     command: ['kubectl', 'version']

  # String mode
  # initContainers: |-
  #   - name: do-something
  #     image: bitnami/kubectl:{{ .Capabilities.KubeVersion.Major }}.{{ .Capabilities.KubeVersion.Minor }}
  #     command: ['kubectl', 'version']

  logLevel: info
